﻿using System;
using System.Collections.Generic;
using CTS.Data.Domain.Dao;

namespace CTS.Data.IMUsers.Domain.Dao
{
    public class UserComDao : GenericDao<EntitiesDataContext>
    {
        // Định nghĩa hằng file sql
        public const string USERCOMDAO_ISEXIST_SQL = "UserComDao_IsExist.sql";
        public const string USERCOMDAO_GETINFO_SQL = "UserComDao_GetInfo.sql";

        /// <summary>
        /// Kiểm tra tồn tại user
        /// </summary>
        public bool IsExist(Guid userCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { userCd.ToString() };
            // Kết quả trả về
            return IsExist<IMUser>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Kiểm tra tồn tại user
        /// </summary>
        public bool IsExist(string userName, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                UserName = userName,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Lấy thông tin user
            var userInfo = GetObjectByFile<IMUser>(USERCOMDAO_ISEXIST_SQL, param); ;
            // Kết quả trả về
            return userInfo != null;
        }

        /// <summary>
        /// Lấy thông tin user
        /// </summary>
        public IMUser GetInfo(Guid userCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { userCd.ToString() };
            // Kết quả trả về
            return GetSingle<IMUser>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin user
        /// </summary>
        public IMUser GetInfo(string userName, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                UserName = userName,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetObjectByFile<IMUser>(USERCOMDAO_GETINFO_SQL, param);
        }

        /// <summary>
        /// Lấy danh sách user
        /// </summary>
        public IList<IMUser> GetList(bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetListByFile<IMUser>(USERCOMDAO_GETINFO_SQL, param);
        }
    }
}
